const parser = require('@babel/parser')
const traverse = require('@babel/traverse').default
const generate = require('@babel/generator').default

/************************** 源代码 **************************/

const sourceCode = `
const arr = Array(10).fill('a')
debugger
`

/************************** parse 解析阶段 **************************/

/**
 * 调用 parser.parse(input, options) 根据源代码生成对应 AST
 * - input：源代码字符串
 */
const ast = parser.parse(sourceCode, { sourceType: 'unambiguous' })

/************************** transform 转换阶段 **************************/

/**
 * 调用 traverse(parent, opts) 遍历各个节点，当命中指定类型节点时触发 callback
 * - parent：parser 生成的 AST
 */
traverse(ast, {
  // 遍历到 debugger 关键字会调用该函数
  DebuggerStatement(path, state) {
    path.remove() // 移除该节点
  }
})

/************************** generate 生成阶段 **************************/

/**
 * 调用 generate(ast) 根据 AST 生成对应目标代码
 */
const { code } = generate(ast)

console.log('生成代码：', code)
